package com.dycong.common.leetcode.yi;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * 给定一个整数，编写一个函数来判断它是否是 2 的幂次方。
 * 输入: 1
 * 输出: true
 * 解释: 20 = 1
 * <p>
 * 输入: 218
 * 输出: false
 * User: yilin
 * Date: 2019-07-31
 * Time: 14:20
 * 解题思路：首先要大于零 ，还要是2的次幂，那用二进制来表示就是  1（1）,10（2）,100（4）,1000（8）   这种，然后在判断n&n-1的结果 ，只有n为2的次幂时，n&n-1才等于0，比如: 8用二进制表示为1000， 那8-1=7   表示为0111    1000&0111=0
 */
public class PowerOfTwo {

    //
    public boolean isPowerOfTwo(int n) {
        if (n <= 0) {
            return false;
        }
        return (n & (n - 1)) == 0;
    }
}
